﻿#define _CRT_SECURE_NO_WARNINGS

//⻘蛙跳台阶问题
//计算一只青蛙从地面跳到指定高度 n 的台阶有多少种不同的跳跃方式。
// 根据题目描述，青蛙每次可以选择跳 1 级或者2 级直到达到目标高度。
//递归
#if 0
#include <stdio.h>
int count(int n)
{
	if (n == 1)
		return 1;
	if (n == 2)
		return 2;
	return count(n - 1) + count(n - 2);
}
int main()
{
	printf("请输入青蛙要跳到第几层台阶：\n");
	int n = 0;
	scanf("%d", &n);
	int a = count(n);
	printf("有%d种方法\n",a);

	return 0;
}
#endif

//非递归
#if 0
#include <stdio.h>
int count(int n)
{
	int a = 1;
	int b = 2;
	int c = 1;
	if (n == 2)
	{
		return 2;
	}
	else
	{
		while (n > 2)
		{
			c = a + b;
			a = b;
			b = c;
			n--;
		}
	}
	return c;
}
int main()
{
	printf("请输入青蛙要跳到第几层台阶：\n");
	int n = 0;
	scanf("%d", &n);
	int a = count(n);
	printf("有%d种方法\n", a);
	return 0;
}
#endif


//汉诺塔问题
//递归
#if 0
#include <stdio.h>
void Print(int x,char a,char b,char c)
{
	if (x == 1)
	{
		printf("%c->%c\n", a, c);
	}
	else
	{
		Print(x - 1, a, c, b);
		printf("%c->%c\n", a, c);
		Print(x - 1, b, a, c);
	}
}
int main()
{
	printf("请输入第一根柱子有几个圆片:\n");
	int input = 0;
	char a = 'a';
	char b = 'b';
	char c = 'c';
	scanf("%d", &input);
	Print(input,a,b,c);

	return 0;
}
#endif

